import asyncio
import os
from llama_index.core.agent.workflow import FunctionAgent

# Context可以用来管理对话上下文
from llama_index.core.workflow import Context

from llama_index.llms.openai import OpenAI


agent = FunctionAgent(
    llm=OpenAI(model="gpt-4o-mini"),  # 指定使用大模型工具
    system_prompt="你是一个乐于助人的助手，可以记住用户信息并进行多轮对话，请始终友好自然的与用户交流",  # 定义系统提示，描述代理的行为
)


async def main():
    try:
        # 创建对话上下文对象，，用于存储代理的对话历史
        ctx = Context(agent)
        response = await agent.run("我的名字叫张三", ctx=ctx)
        print(response)

        response = await agent.run("你还记得我的名字吗？", ctx=ctx)
        print(response)
    except Exception as e:
        print(e)


if __name__ == "__main__":
    asyncio.run(main())
